package cn.csc.module.order.convert.order;

import cn.csc.framework.common.pojo.PageResult;
import cn.csc.module.order.api.order.dto.OrderPageReqDTO;
import cn.csc.module.order.api.order.dto.OrderRespDTO;
import cn.csc.module.order.api.order.dto.OrderWithItemRespDTO;
import cn.csc.module.order.controller.admin.item.vo.OrderItemBaseVO;
import cn.csc.module.order.controller.admin.order.vo.*;
import cn.csc.module.order.controller.app.dto.OrderCreateReqDTO;
import cn.csc.module.order.controller.app.order.vo.AppOrderCreateReqVO;
import cn.csc.module.order.controller.app.order.vo.AppOrderDetailRespVO;
import cn.csc.module.order.controller.app.order.vo.AppOrderPageRespVO;
import cn.csc.module.order.controller.app.order.vo.AppOrderWithItemAndAddrRespVO;
import cn.csc.module.order.controller.app.vo.OrderRespVO;
import cn.csc.module.order.dal.dataobject.order.OrderDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订单信息 Convert
 *
 * @author liuchuang
 */
@Mapper
public interface OrderConvert {

    OrderConvert INSTANCE = Mappers.getMapper(OrderConvert.class);

    OrderDO convert(OrderCreateReqVO bean);

    OrderDO convert(OrderUpdateReqVO bean);

    OrderRespAdminVO convert(OrderDO bean);

    OrderWithItemRespDTO convert(OrderWithItemRespVO bean);

    AppOrderWithItemAndAddrRespVO convert(OrderWithItemAndAddrRespVO bean);

    OrderExtPageReqVO convert(OrderPageReqVO bean);

    List<OrderRespAdminVO> convertList(List<OrderDO> list);

    PageResult<OrderRespAdminVO> convertPage(PageResult<OrderDO> page);

    List<OrderExcelVO> convertList02(List<OrderDO> list);

    OrderDO convert2(OrderCreateReqDTO bean);

    OrderRespVO convertVo(OrderDO bean);
    
    PageResult<OrderRespVO> convertMyPage(PageResult<OrderDO> page);

    OrderInfoRespVO convertInfo(OrderDO bean);

    OrderRespDTO convertDto(OrderDO bean);

    OrderPageReqVO convert01(OrderPageReqDTO pageVO);

    PageResult<OrderRespDTO> convertMyPage01(PageResult<OrderRespVO> pageVO);

    OrderExcelVO convert02(OrderDO bean);

    OrderDO convertV2(AppOrderCreateReqVO bean);

    AppOrderDetailRespVO convert03(OrderDO bean);

    PageResult<AppOrderPageRespVO> convertMyPage02(PageResult<OrderDO> page);

    OrderExcelVO convert02(OrderItemBaseVO bean);
}
